package com.qing.lambda;

/**
 * 使用lambda表达式，接口必须是函数式接口，即只有一个方法
 */
public class StudyLambdaMain {
    public static void main(String[] args) {
        //最原始的方法
        //StudyLambda studyLambda = new ImplementStudyLambda();
        //studyLambda.doSomething("学习");

        //匿名内部类方法
        StudyLambda studyLambda = new StudyLambda() {
            @Override
            public void doSomething(String thing, int num) {
                System.out.println("你在" + thing);
            }
        };
        studyLambda.doSomething("qiaodiama", 6);

        //简化1 去掉方法
        StudyLambda studyLambda1 = (String thing, int a) -> {
            System.out.println("你在" + thing);
        };
        studyLambda.doSomething("wan", 1);

        //简化2 去掉参数类型
        StudyLambda studyLambda2 = (thing, num) -> {
            System.out.println("你在" + thing);
        };
        studyLambda2.doSomething("xuexi", 1);

        //简化3 去掉括号（只有一个参数的时候，可以去掉类型的括号）
        StudyLambda studyLambda3 = (thing, num) -> {
            System.out.println("我在" + thing);
        };
        studyLambda3.doSomething("去掉括号", 1);

        //简化4 当方法只有一行的时候，可以去掉方法块
        StudyLambda studyLambda4 = (thing, num) -> System.out.println("我在" + thing);
        studyLambda4.doSomething("嘿嘿", 6);

    }
}